# -*- coding:utf-8 -*-
# 北梦测教育
# 课程咨询加微信：xiaobeiceshi

# 1.测试的结果数据在哪
# 在测试报告里面

# 2.怎么获取测试报告的数据呢
# 3.测试报告html的格式是怎么生成的
# 首先生成 json 格式的报告，然后通过 allure generate 生成html格式的报告
# 也就是说原始数据是在json格式里面的
# html的报告不好获取，但是json格式我们可以处理

# 4.怎么获取json的数据来处理
import json
from config.config import *


def get_test_result_data():
    """
    通过读取html报告目录下面的summary.json来获取最终的概览数据
    """
    summary_path = get_report_path()
    with open(summary_path,"r",encoding="utf-8") as fq:
        summary = json.load(fq)
    return summary.get("statistic")


# 因为allure的json报告是没有去重和归并的，因此下面这个函数不能使用
# def get_test_result_data():
#     # os.listdir(result_dir) 获取一个目录下有哪些文件
#     names = os.listdir(report_path)
#     # print(names)
#
#     # 结果统计
#     result = defaultdict(int)
#
#     for name in names:
#         # 判断后缀是 result.json
#         if name.endswith("result.json"):
#             # print(name)
#             with open(os.path.join(report_path, name), "r", encoding="utf-8") as file:
#                 data = json.load(file)
#                 # 字典[键] = 值
#                 result[data.get("status", "unknown")] += 1
#
#     return result


    # print(result.get("passed"))
    # for k,v in result.items():
    #     print(k)
    #     print(v)

# # json测试结果的存放目录
# result_dir = "../report/json_report"
#
# # os.listdir(result_dir) 获取一个目录下有哪些文件
# names = os.listdir(result_dir)
# # print(names)
#
# # 定义一个字典：键是通过或者失败，值是个数
# result = {"passed":0,"failed":0,"unknown":0}
#
# for name in names:
#     # 判断后缀是 result.json
#     if name.endswith("result.json"):
#         # print(name)
#         with open(result_dir+"/"+name,"r",encoding="utf-8") as file:
#             data = json.load(file)
#             # print(data)
#             # 这里使用字典.get是为了代码更好的异常处理
#             # 如果获取的值不存在，不会报错，并且还可以制定默认值
#             print(data.get("status","unknown"))
#
#             # 判断是成功还是失败，还是位置
#             if data.get("status","unknown") == "passed":
#                 result['passed'] += 1
#             elif data.get("status","unknown") == "failed":
#                 result['failed'] += 1
#
#             elif data.get("status","unknown") == "unknown":
#                 result["unknown"] += 1
#
# print(result)





if __name__ == '__main__':
    print(get_test_result_data())